From: Jasper St. Pierre Date: Sat, 18 May 2013 22:51:58 +0000 (-0400) Subject: global: Clean up the code that actually sets the shape on the stage X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~3979 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=9c8c282e0818ff90ff28ba788943a3bc76be75e0;p=gnome-shell.git global: Clean up the code that actually sets the shape on the stage Instead of having "dummy" setters that do work, split out the parts that do work into their own function. https://bugzilla.gnome.org/show_bug.cgi?id=700735 --- diff --git a/src/shell-global.c b/src/shell-global.c index 5629b622f..c448a7abc 100644 --- a/src/shell-global.c +++ b/src/shell-global.c @@ -604,6 +604,19 @@ focus_actor_changed (ClutterStage *stage, sync_stage_window_focus (global); } +static void +sync_input_region (ShellGlobal *global) +{ + MetaScreen *screen = global->meta_screen; + + if (global->gtk_grab_active) + meta_empty_stage_input_region (screen); + else if (global->input_mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region) + meta_set_stage_input_region (screen, None); + else + meta_set_stage_input_region (screen, global->input_region); +} + /** * shell_global_set_stage_input_mode: * @global: the #ShellGlobal @@ -623,24 +636,12 @@ void shell_global_set_stage_input_mode (ShellGlobal *global, ShellStageInputMode mode) { - MetaScreen *screen; - - g_return_if_fail (SHELL_IS_GLOBAL (global)); - - screen = meta_plugin_get_screen (global->plugin); - - if (global->gtk_grab_active) - meta_empty_stage_input_region (screen); - else if (mode == SHELL_STAGE_INPUT_MODE_FULLSCREEN || !global->input_region) - meta_set_stage_input_region (screen, None); - else - meta_set_stage_input_region (screen, global->input_region); + if (mode == global->input_mode) + return; - if (mode != global->input_mode) - { - global->input_mode = mode; - g_object_notify (G_OBJECT (global), "stage-input-mode"); - } + global->input_mode = mode; + sync_input_region (global); + g_object_notify (G_OBJECT (global), "stage-input-mode"); } /** @@ -766,10 +767,7 @@ shell_global_set_stage_input_region (ShellGlobal *global, global->input_region = XFixesCreateRegion (global->xdisplay, rects, nrects); g_free (rects); - /* set_stage_input_mode() will figure out whether or not we - * should actually change the input region right now. - */ - shell_global_set_stage_input_mode (global, global->input_mode); + sync_input_region (global); } /** @@ -1299,7 +1297,7 @@ grab_notify (GtkWidget *widget, gboolean was_grabbed, gpointer user_data) global->gtk_grab_active = !was_grabbed; /* Update for the new setting of gtk_grab_active */ - shell_global_set_stage_input_mode (global, global->input_mode); + sync_input_region (global); } /**